package com.exam.api.common.poster;

import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * Text
 */
@Schema(description = "Text")
@EqualsAndHashCode(callSuper = true)
@Data
public class Text extends ZIndex{

    /**
     * 字体
     */
    @Schema(description = "字体")
    private String fontName;

    /**
     * x 坐标
     */
    @Schema(description = "x 坐标")
    @NotNull(message = "文本X坐标不能为空")
    private int x = 0;

    /**
     * y 坐标
     */
    @Schema(description = "y 坐标")
    @NotNull(message = "文本Y坐标不能为空")
    private int y = 0;

    /**
     * 字体大小
     */
    @Schema(description = "字体大小")
    @Min(value = 8, message = "文本字体大小不能小于8")
    private Integer fontSize = 24;
    /**
     * 颜色
     */
    @Schema(description = "颜色")
    @NotNull(message = "文本字体颜色不能为null")
    private String color = "#000000";

    /**
     * 文本内容
     */
    @Schema(description = "文本内容")
    @NotEmpty(message = "文本内容不能为空")
    private String text;

    /**
     * 是否居中
     */
    @Schema(description = "是否居中")
    private Boolean center = false;

    /**
     * 最大行宽，超出则换行 默认 999
     */
    @Schema(description = "最大行宽，超出则换行 默认 999")
    private Integer maxLineWidth = 999;
    /**
     * 最大行数，超出则丢弃 默认 999
     */
    @Schema(description = "最大行数，超出则丢弃 默认 999")
    private Integer maxLineCount = 999;

    /**
     * 自动换行时，多行文本的对齐方式 Left Center Right
     */
    @Schema(description = "自动换行时，多行文本的对齐方式 Left Center Right")
    private String lineAlign = "Left";

    /**
     * 字符风格 0 正常 1 粗体 2 斜体
     */
    @Schema(description = "字符风格 0 正常 1 粗体 2 斜体")
    @NotNull
    private Integer fontStyle = 0;
}
